﻿using System;
using System.Collections.Generic;
using System.Data;
using Entidades;

namespace DAO
{
    public class BarrioDAO : DAOBase
    {
        private const string InsertProcedure = "PR_BARRIO_I"; 
		private const string UpdateProcedure = "PR_BARRIO_U"; 
		private const string SelectProcedure = "PR_BARRIO_S"; 
		private const string SelectAllProcedure = "PR_BARRIO_SA"; 
		private const string DeleteProcedure = "PR_BARRIO_D"; 

		public BarrioDAO() : base() {}

        #region VirtualProcedures

        public override string obtainInsertProcedure()
        {
            return InsertProcedure;
        }

        public override string obtainDeleteProcedure()
        {
            return DeleteProcedure;
        }

        public override string obtainUpdateProcedure()
        {
            return UpdateProcedure;
        }

        public override string obtainSelectProcedure()
        {
            return SelectProcedure;
        }

        public override string obtainSelectAllProcedure()
        {
            return SelectAllProcedure;
        }

        #endregion

        #region IDAO Members

        public override void cargarEntidad(EntidadBase entidad, IDataReader reader)
        {
            EntidadBarrio barrio = (EntidadBarrio)entidad;
            object tempValue;
            // Campo Id
            barrio.Id = Convert.ToInt32(reader["id_barrio"]);
            // Resto de campos
            tempValue = reader["nombre"];
            if (tempValue.Equals(DBNull.Value))
            {
                barrio.Nombre = "";
            }
            else
            {
                barrio.Nombre = Convert.ToString(tempValue);
            }

            //TODO: como manejamos la carga de ralaciones???
        }

        public override List<EntidadBase> cargar(IDataReader reader)
        {
            // Creo la lista vacia
            List<EntidadBase> listaEntidades = new List<EntidadBase>();
            // Itero en el data reader y cargo los datos basicos
            while (reader.Read())
            {
                EntidadBarrio entity = new EntidadBarrio();
                cargarEntidad(entity, reader);
                listaEntidades.Add(entity);
            }

            reader.Close();

            return listaEntidades;
        }

        #endregion
    }
}